تعریفوتمجید از این مهندسهای تروفرز، کار را به جایی کشانده که در در انجمنهای برنامهنویسی به آنها لقب 10x engineer، دادهاند. با این حال این پرسش مطرح میشود که کارفرمایان چگونه تشخیص میدهند که یک برنامهنویس ميتواند ۱۰ برابر بیشتر از دیگران کار انجام دهد؟ اصلاً 10x engineer از کجا آماده است؟ ریشه پاسخ به این پرسش به ۱۹۶۸ میلادی باز میگردد. در آن زمان تحقیقی برای مقایسه کارآیی برنامهنویسی آفلاین و آنلاین انجام شد. در این تحقیق، ۲۴ مهندس نرمافزار حضور داشتند. این مهندسها به دو گروه تقسیم شدند. از آنها خواسته شد تا مشکلات الگوریتمهایی مانند هزارتو (Maze) و دستگاه جبری را حل کنند. در نهایت، مدت زمانی که هر کدام از این دو گروه مهندس برای عیبیابی و برنامهنویسی اختصاص داده بودند، با یکدیگر مقایسه شد. این تحقیق مشخص کرد تفاوت چشمگیری میان بهترین مهندسها و بدترین آنها وجود دارد. این تفاوت به اندازهای بود که یک مهندس خوب، چیزی حدود ۱۰ برابر کارها را بهتر از مهندس بد انجام میداد. به عبارت ساده عملکرد مهندس تروفرز و کاربلد ۱۰ بار بهتر از بدترین مهندسهاست.
با این حال در دنیای واقعی نمیتوان مدعی شد که یک مهندس تروفرز میتواند ۱۰ بار سریعتر کارها را به پایان برساند. اول اینکه در آزمایشی که به آن اشاره کردیم، مهندسها مشکلات الگوریتم را حل کردند، اما در دنیای واقعی عموماً با مشکلات برنامهنویسی سروکار دارند. دوم اینکه در این تحقیق بدترینها با بهترینها مقایسه شده بودند و خبری از مهندسهایی با عملکرد متوسط نبود. میتوانید بهراحتا دانشآموز دبیرستانی را پیدا کنید و برای حل مشکلات الگوریتم با وی رقابت نمایید، اما این رقابت به این معنا نیست که عملکرد شما ۱۰ برابر بهتر از یک مهندس نرمافزار متوسط است. سوم اینکه تحقیقات در گروه آماری کوچک با مشکلات مشخص انجام شده بود و نمیتوان آن را به تمامی مهندسین نرمافزار تعمیم داد.
در هر صورت، باید گفت همگی ما میدانیم مهندسین نخبهای هستند که گره مشکلاتی که نمیتوانیم حل کنیم را باز میکنند، دانش بیشتری نسبت به ما دارند و پروژههای چشمگیری تحویل میدهند. اگر از این دیدگاه به قضیه نگاه کنیم، تحقیقی که به آن اشاره شد کاملاً نادرست نیست. در نهایت، صنعت نرمافزار توسط مهندسین نخبهای مانند لینوس توروالدز (Linus Torvalds)، دیوید هاینمیر هانسن (David Heinemeier Hansson)، استیو وازنیاک (Steve Wozniak) و بسیاری نخبه دیگر ایجاد شده است. بدون شک میتوانیم مدعی شویم این نخبهها، حتا بیشتر از ۱۰ برابر از مهندسهای معمولی در صنعت نرمافزار عملکرد دارند.
مشکل واقعی این نیست که بعضی از مهندسهای نرمافزار عملکرد بهتری نسبت به سایرین دارند، مشکل اینجاست که وقتی کارفرمایان به دنبال مهندسهای نرمافزار با عملکرد بسیار خوب میگردند، ارزیابی نادرست از آنها دارند و ناخواسته آنها را برای رفتارهای مخرب تشویق میکنند.
رفتارهای مخرب
حساب کاربری skirani@، در توئیتر با رشته توئیتی مهندسهای تروفرز که ۱۰ برابر سریعتر پروژهها را انجام میدهند، بهعنوان افرادی معرفی میکند که از جلسات متنفرند، شبها کار میکنند، استادهای ضعیفی هستند و رنگ مشکی را برای پشتزمینه رایانهشان انتخاب میکنند. ناگفته پیداست که چنین توئیتی اینترنت را به هم ریخت و بحثهای زیادی بهدنبال داشت. بعضی از این صفتها، رفتارهای مشکلسازی بهحساب میآیند. مهندسهایی که کارها را سریعتر انجام میدهند، بسیار باهوشند، اما بهراحتی نمیتوان با آنها کنار آمد. علاقه زیادی به کار دارند، اما اگر حوصلهشان سر برود، کار را کنار میگذارند. پایبندی به قوانین ندارند و وسواس زیادی برای لوازمهای خود دارند. وقت و بیوقت کار میکنند و نظرات قاطعی درباره چیزهای مختلف ابراز میکنند. این افراد ساعتها بر سر چیزهای پیشپاافتاده بحث میکنند و دوست ندارند دیگران درباره کدهای آنها نظر بدهند یا این کدها را تغییر دهند.
مطمئن هستیم شما هم تعدادی مهندسهای نرمافزار را میشناسید که رفتارهایی از این دست دارند. هوش و علاقهای که این مهندسها به کار دارند، عزتنفس آنها را افزایش میدهد. به همین دلیل نیز برخی از رفتارهایی که به آنها اشاره کردیم از آنها سر میزند. این مهندسها بر این باور هستند که نسبت به دیگر همکاران خود بیشتر خودشان را وقف کار کردهاند. با این حال زمانی که پایان پروژه فرا میرسد، متوجه میشوند که رفتارهای آنها بازخورد نامناسب دیگر همکاران را به دنبال داشته است.
هیچ رابطه علتومعلولی بین اینکه مهندس نرمافزار نخبهای باشید و رفتار عجیبوغریب داشته باشید، وجود ندارد. به عبارت دیگر میتوان گفت بعضی از مهندسهای نرمافزار نخبه ممکن است رفتار عجیبی داشته باشند، اما انجام رفتارهای عجیبوغریب از کسی مهندس نرمافزار نخبه نمیسازد. عجیبوغریب رفتار کردن بهانهای برای نخبه بودن نیست. بعضی از مهندسهای نرمافزار علاقهای به شرکت در اجتماعات ندارند. با این حال، نخبه بودن این افراد دلیلی برای حضور نیافتن آنها در جمعهای دوستانه و کاری بهحساب نمیآید. برای تشخیص یک مهندس نرمافزار نخبه به جای اینکه به رفتار مخرب وی نگاه کنیم، باید عملکرد کلی وی را بررسی نماییم.
ممکن است این دیدگاه کاملاً درست نباشد، اما این دسته از مهندسهای نرمافزار بسته به محاسبه عملکرد آنها توسط دیگران، بیشتر در انجام پروژهها مشارکت میکنند. در نگاه اول این مهندسها، تیکتهای (Ticket) بیشتری را انجام میدهند و کدهای بیشتری نسبت به دیگر مهندسهای نرمافزار مینویسند، اما ماجرا پیچیدهتر از این حرفهاست. در نهایت این مدیر پروژه و دیگر همکاران هستند که ماحصل زحمتهای مهندس نرمافزار را قضاوت میکنند. به همین دلیل اگر مدیر پروژه کارهایی که این مهندسها انجام دادهاند را تشخیص ندهد، این کارها به نشانهای از عملکرد خوب آنها تبدیل نخواهد شد. تجربه ثابت کرده در بیشتر مواقع مدیر پروژه تمامی کدهایی که مهندسهای نرمافزار نوشته را بررسی نمیکند. همچنین تغییرات و بازساخت کد (Refactoring)، باگ (Bug) و مشکلات نرمافزاری ناخواستهای ایجاد میکند. این مشکلات باعث میشود مدیران احساس کنند این مهندس نخبه در سر راه پیشرفت پروژه سنگاندازی کرده است. به همین دلیل این پرسش پیش میآید که آیا این رفتارها واقعاً برای شرکت نرمافزاری سودمند است؟ در این شرایط سلیقههای شخصی با منافع شرکت در یک مسیر قرار نمیگیرد. مهندسهای تروفرز ممکن است خلاقیت بیشتری داشته باشند، اما گاهیاوقات این خلاقیت کار دستشان میدهد. این مهندسها به رغم اینکه فریموُرکهای (FrameWork) کارآمدی در شرکت وجود دارد، فریمورک دلخواه خودشان را توسعه میدهند. چنین رفتارهایی مشکلات زیادی برای دیگر اعضای پروژه ایجاد میکند.
تعریف مهندس نرمافزار تروفرز
با توجه به توضیحاتی که از مفهوم مهندس نرمافزاری تروفرز در بالا مطرح کردیم، حتماً به این نتیجه رسیدید که نوشتن کدهای بیشتر، به پایان رساندن تیکتهای (Tickets) زیادتر و اشتیاق در انجام کار، کسی را به مهندس تروفرز با عملکردی ۱۰ برابر بیشتر از بقیه تبدیل نمیکند. به همین دلیل این پرسش پیش میآید که برای موفقیت در کار چه باید کرد؟ برای تعریف مهندس تروفرز باید معکوس به این قضیه نگاه کنیم. منظورمان این است که برای اینکه کارها را ۱۰ برابر بیشتر و سریعتر انجام بدهیم، نیازی به رفتاری عجیبوغریب نیست. مهندسی که کارها را سریعتر انجام میدهد، هیچ لزومی ندارد که رفتاری غیرمعمول داشته باشد.
به رغم اینکه گفته میشود باید در محیط کار شجاع بود و از اشتباهات هراس نداشت، برای تبدیل شدن به مهندسی تروفرز، افراد باید تا جایی که میتوانند جلوی اشتباههای خود را بگیرند. بین اشتباههای حسابشده و اشتباههای غیرقابلپیشبینی تفاوت زیادی وجود دارد. باید جلوی سهلانگاریها را بگیرید و کدنویسی را با تمام دقت انجام دهید؛ کدهای بد ننویسید و باگ (Bug) درست نکنید؛ خودتان را سرگرم کارهایی نکنید که کسی از شما نخواسته آنها را انجام دهید؛ تمرکز بیشتری در پروژه داشته باشید و اگر چیزی را نمیدانید، از همکارانتان بپرسید؛ اطمینان خاطر حاصل کنید کاری که انجام میدهید درست است؛ کارها را سر موعد تحویل دهید و قولی ندهید که از انجام آن عاجز باشید؛ به نظرهای دیگران گوش فرا دهید و احترام همکاران را نگه دارید؛ رفتارهای مغرورانه و ناپسند را در جلسههای کار کنار بگذارید. به شما قول میدهیم با انجام این رفتارها همکاران، شما را بهعنوان مهندسی کاربلد خواهند شناخت که یک سروگردن از بقیه بالاتر است.
به لطف رعایت این رفتارها، عملکرد بهتری در اجرای پروژهها خواهید داشت و تعامل بهتری با همکاران برقرار میکنید. این شرایط به شما کمک میکند تا در کنار افزایش مهارتهای فنی، کدهای بیشتری بخوانید، پروژههای جانبی ایجاد کنید، با فریموُرکها (Framework)، ابزارها و IDEهای بیشتری آشنا شوید، از خودکارسازی برنامهنویسی بهره بگیرید و بهرهوری خود را افزایش دهید. در نظر داشته باشید از دیدگاه شرکتها، مهم نیست که چقدر خوب باشید، مهم آن است که کاری تماموکمال تحویل دهید و واقعاً سازنده باشید. به همین دلیل قبل از هر چیز باید ببینید کدام کار درست است و برای شما اعتبار و احترام به دنبال میآورد. زمان و تمرکز شما محدود است، با این حساب باید مشکل را درست پیدا کنید و برای حل آن، نظر افراد صاحبنظر را جمع کنید و دلایل محکمی برای تایید آن ارائه دهید. کار را به گونهای انجام دهید که در بین کارهای دیگر همکاران خودنمایی کند.
از هر فرصتی برای انتقال دانش بهره بگیرید. همکاران خود را به ناهار یا شام دعوت کنید، تجربههای خود را در جلسههای کاری بهاشتراک بگذارید. حتا اگر بهتنهایی از پس حل مشکلات بر نمیآیید، تلاش شما در حل این مشکلات پیش مدیران و همکارانتان جلوه خواهد کرد. در نتیجه مدیران شرکت در پروژههای بعدی، روی شما حساب باز میکنند و آزادی عمل بیشتری در اختیارتان قرار میدهند. از آنجایی که در کنار دیگر همکاران یک گروه نرمافزاری را تشکیل دادهاید، در نهایت کاری که این گروه انجام میدهد، ارزیابی میشود. به همین دلیل باید به دیگر اعضای گروه برای حل مشکلات و ارتقا کار کمک کنید. اگر گروه بهخوبی عمل نکند، بدون شک شما هم عملکرد خوبی نخواهید داشت. برای رسیدن به این هدف به اعضای گروه کمک کنید تا باگهای کمتری داشته باشند. کدهای سادهای بنویسند و از عملکرد کدهای خود اطمینان خاطر حاصل کنند. بازبینی کدها، روشی مناسب برای دریافت بازخورد و شناسایی باگهای بالقوه به حساب میآید. پرسیدن سوال درست در جلسهها نیز به شناخت نیاز کاربران کمک میکند. با این حال بهتر است روحیه اعضای تیم را قبل از هر گونه پرسش یا تذکر در نظر بگیرید. اگر رابطه خوبی میان شما و دیگر اعضای گروه وجود نداشته باشد، تذکر مستقیم درباره اشتباههایی که همکاران مرتکب شدهاند، ممکن است زمینه دلخوری میان شما و همکاران را فراهم کند. اعضای تیم را کاملاً بشناسید و رویکرد مناسبی را در تعامل با آنها در پیش بگیرید. تعامل مناسب با اعضای گروه، کاری دشوار، اما ضروری است که تاثیر چشمگیری در افزایش بهرهوری دارد.
در نهایت باید انتظارات مسئول پروژه را مدیریت کنید. این مسئول پروژه است که باید درباره عملکرد شما نظر بدهد. با این حال، کار مسئول پروژه، موفق کردن شما نیست؛ وی باید اطمینان حاصل کند که کار را بهدرستی انجام میدهید. به همین دلیل، ممکن است تناقضهایی میان اعضای گروه و مسئول پروژه ایجاد شود. چه بسا کاری که انجام میدهید، در راستای نظر مسئول پروژه نباشد. دلیل این امر کاملاً روشن است، موفقیت در کاری که ربط چندانی به پروژه ندارد، افتخاری برای مدیر پروژه به دنبال نمیآورد؛ با این حال شکست شما در این کار، باعث مواخذه مدیر پروژه میشود. به همین دلیل تحقیقات ثابت کرده مدیران میانی شرکتها به اندازه کارمندان یا مدیران ردهبالا خلاقیت کمتری دارند. اینجاست که باید در راستای انتظارات مدیر پروژه کار کنید. بهتر است با مدیر پروژه درباره انتظارات خود از موفقیت، شفاف صحبت کنید. فرایند پیشرفت کار را با مدیر پروژه بازبینی کنید، اجازه دهید مدیر پروژه مشکلات را برای شما حل کند و از موفقیتهایتان اعتبار بهدست آورد.
چگونه مهندس نرمافزار تروفرز شویم؟
حتا با برآورده کردن تمامی انتظارهای مسئول پروژه و ارائه بهترین کار، باز هم به مهندس تروفرزی که کارها را ۱۰ برابر سریعتر از دیگران انجام میدهد، تبدیل نخواهید شد. به همین دلیل به پرسش اول برمیگردیم که چگونه میتوان به مهندس نرمافزاری تبدیل شد که ۱۰ برابر سریعتر و حرفهایتر از دیگر همقطاران خود کار میکند؟
با نگاهی به کارنامه نخبههایی مانند لینوس توروالدز، متوجه خواهید شد که این نخبه دنیای نرمافزارهای متنباز، تمامی کرنل (Kernel) لینوکس را به تنهایی ننوشته است. نرمافزارها عموماً ماحصل کار گروهی هستند. نرمافزاری موفق است که چندین نفر با تلاش و کوشش آن را توسعه داده باشند. نخبههایی که به آنها اشاره کردیم، غالبا فقط آغازگر پروژههای جدید بودهاند و افتخار این پروژهها را نیز از آن خود کردند. مهندسی که حتا بیشتر از ۱۰ برابر در یک پروژه تاثیر دارد، رهبر گروه در توسعه یک پروژه موفق به حساب میآید.
برای موفقیت یک پروژه، مهارت تعامل با دیگران اهمیت زیادی پیدا میکند. فقط کسی که ارتباطات خوبی با دیگران دارد و دانش خود را با همکارانش بهاشتراک میگذارد، میتواند دیگر مهندسان بااستعداد را در پروژه رهبری کند. ناگفته نماند، مهارت فنی نیز نقش مهمی در پیشرفت پروژه دارد. از طرف دیگر مهارت فراگیری از دیگران، مهارتی است که نباید از اهمیت آن غافل شد. مشکلات ناشناختهای در سر راه تمامی پروژهها قرار دارد. به همین دلیل باید چیزهایی که نمیدانید را بهسرعت فرا بگیرید و دانش خود را برای حل مشکل در اختیار همکاران قرار دهید. در نهایت، اجرای کار فرا میرسد. ممکن است تاکید بر چگونگی اجرای کار، کلیشهای بهنظر برسد، اما یک برنامهنویس کاربلد، باید برای موفقیت پروژه سخت تلاش کند. تمرکز در انجام یک پروژه یکی از مهمترین عوامل موفقیت بهحساب میآید.
سخن پایانی
برای تبدیل شدن به مهندس تروفرزی که ۱۰ برابر سریعتر کد مینویسد، باید توانایی هدایت پروژه به سمت موفقیت را داشته باشید. تا حد امکان از اشتباهها برحذر باشید، به همکاران کمک کنید و انتظارات مدیران پروژه را مدیریت نمایید. در نهایت برای اجرای موفقیتآمیز پروژه حتا لحظهای دست از تلاش نکشید. رفتارهای مخربی که به آنها اشاره کردیم را فراموش کنید. این رفتارها جلوهای ناخوشایند از شما در محل کار ایجاد میکنند و باعث میشوند همکاران تمایلی به همکاری با چنین فردی نداشته باشند.
از تجربههایتان بنویسید تا به دیگران کمک کند:
- اگر در مورد کدنویسی سریع یا هر نوع کدنویسی تجربهای دارید، در بخش دیدگاهها با دوستان دیگر به اشتراک بگذارید.
- نظرتان در مورد این مقاله هم میتواند جالب باشد. برای دیگران بنویسید.
به این مطلب چند ستاره میدهید؟(امتیاز: 4.9 - رای: 3)
- نویسنده: محمد کاملان